package com.hxzy.controller.mobile.product.resp;

import com.google.common.util.concurrent.AtomicDouble;
import com.hxzy.common.resp.DishFlavorItem;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * @Author wy
 * @Description TODO
 * @Date 2024/1/17 11:47
 * @Version 1.0
 */
@Getter
@Setter
public class MobileProductResp {
    /**
     * 商品id
     */
    private Long id;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 商品价格
     */
    private Double price;

    /**
     * 是否计算价格
     */
    private Boolean changePrice;

    /**
     * 原始价格
     */
    private Double oldPrice;


    /**
     * 查询界面做商品， 自己重新计算价格
     * @return
     */
    public Double getPrice() {
        this.changePrice=false;
        if(this.price>0){
            return this.price;
        }

        //有规格配置
        if(this.getDishFlavors()!=null && this.getDishFlavors().size()>0){

            final AtomicDouble calcPrice=new AtomicDouble(0.0);
            //循环配置，取第1项
            this.getDishFlavors().stream().forEach(p->{
                calcPrice.addAndGet(p.getValue().get(0).getPrice());
            });
            this.changePrice=true;
            //不允许修改
            return calcPrice.get();
        }else{
            //没有规格配置
            return this.price;
        }
    }

    public void setPrice(Double price) {
        this.price = price;
        this.oldPrice=price;
    }

    /**
     * 库存（-1不限量）
     */
    private Integer num;

    /**
     * 商品图片
     */
    private String picture;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 商品综合评分
     */
    private Integer score;

    /**
     * 商家id
     */
    private Long merchantId;

    /**
     * 商家名称(自定义)
     */
    private String merchantName;

    /**
     * 商品分类
     */
    private Long categoryId;

    /**
     * 商品分类名(自定义)
     */
    private String categoryName;

    /**
     * 是否上架 1：上架 ，0：没上架
     */
    private String isgrounding;


    /**
     * 口味明细 (自定义)
     */
    private List<DishFlavorItem> dishFlavors;
}
